package de.eb.webservice.rest;


import java.sql.Timestamp;
import java.util.List;
import java.util.Map;

import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.HttpMethod;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import com.sun.net.httpserver.HttpsExchange;

import de.eb.webservice.domain.Antwort;
import de.eb.webservice.domain.Benutzer;
import de.eb.webservice.domain.Bewertung;
import de.eb.webservice.domain.Frage;
import de.eb.webservice.service.Benutzerverwaltung;
import de.eb.webservice.service.Bewertungsverwaltung;
import de.eb.webservice.service.Frageverwaltung;
import de.eb.webservice.service.Antwortverwaltung;
@Path("/webservice")
public class Resource {
	Benutzer bn = null;
	Frage frage = null;
	List<Antwort>	antwort = null;
	List<Bewertung> bewertung = null;
	
	
	@GET
	@Path("/benutzer/{benutzerid}")
	@Produces("text/xml")
	public Benutzer getBenutzer(@PathParam("benutzerid") int benutzerId) {
		
		bn = Benutzerverwaltung.findbyId( benutzerId);
		return bn;
	}
	
	@GET
	@Path("/benutzer/email/{email}")
	@Produces("text/xml")
	public Benutzer getBenutzerByeMail(@PathParam("email") String eMail) {
		
		bn = Benutzerverwaltung.findbyeMail(eMail);
		return bn;
	}
	
	
	@POST
	@Path("/benutzer")
	public void createBenutzer( @FormParam("benutzername") String benutzername,
								@FormParam("password") String password,
								@FormParam("eMail") String eMail,
								@FormParam("richtig_beantwortete_Fragen") int richtig_beantwortete_Fragen,
								@FormParam("fragen_eingestellt") int fragen_eingestellt) {
		Benutzer bn = new Benutzer();
		bn.setBenutzername(benutzername);
		bn.setPasswort(password);
		bn.setEMail(eMail);
		bn.setRichtig_beantwortete_Fragen(richtig_beantwortete_Fragen);
		bn.setFregenEingestellt(fragen_eingestellt);
		Benutzerverwaltung.createBenutzer(bn);
		
	}

	@PUT
	@Path("/benutzer/update")
	public void updateBenutzer( @FormParam("id") String id,
								@FormParam("wert") String wert) {
		
		Benutzerverwaltung.updateBenutzer(Integer.parseInt(id),Integer.parseInt(wert));
		
	}
	


	@GET
	@Path("/frage/{frageid}")
	@Produces("text/xml")
	public Frage getFrage(@PathParam("frageid") int frageid) {
	
		frage = Frageverwaltung.findFragebyId(frageid);
		return frage;
	}
	
	@POST
	@Path("/frage")
	@Consumes("application/x-www-form-urlencoded")
	public void createFrage( @FormParam("benutzer") String benutzer,
							 @FormParam("fragestellung") String fragestellung,
							 @FormParam("gesperrt") String gesperrt,
							 @FormParam("version") String version,
							 @FormParam("einstellungs_Datum") String einstellungsdatum,
							 @FormParam("stadt") String stadt)
	{
		Frage frage = new Frage();
		frage.setBenutzerId(Integer.parseInt(benutzer));
		frage.setFragestellung(fragestellung);
		frage.setGesperrt(Byte.parseByte(gesperrt));
		frage.setVersion(Integer.parseInt(version));
		frage.setStadt(stadt);
		Frageverwaltung.createFrage(frage);
		
	}
	
	@GET
	@Path("/frage/max")
	@Produces("text/plain")
	public String getMaxIdFrage(){
		return ""+Frageverwaltung.findMaxFrageId();
	}
	
	@GET
	@Path("/antwort/{frageid}")
	@Produces("text/xml")
	public List<Antwort> getAntwort(@PathParam("frageid") int frageid){
		antwort = Antwortverwaltung.findAntwortbyFrageId(frageid);
		return antwort;
	}
	
	
	@POST
	@Path("/antwort")
	public void createAntwort(  @FormParam("frageid") int frageid,
							 	@FormParam("antworttext") String antworttext,
							 	@FormParam("richtig") byte richtig,
							 	@FormParam("longitude") double longitude,
							 	@FormParam("latitude") double latitude)
	{
		Antwort antwort = new Antwort();
		antwort.setFrageId(frageid);
		antwort.setAntworttext(antworttext);
		antwort.setRichtig(richtig);
		antwort.setLongitude(longitude);
		antwort.setLatitude(latitude);
		Antwortverwaltung.createAntwort(antwort);
		
		
	}
	@GET
	@Path("/bewertung/{frageid}")
	@Produces("text/xml")
	public List<Bewertung> getBewertung(@PathParam("frageid") int frageid){
		bewertung = Bewertungsverwaltung.findBewertungByFrageId1(frageid);
		return bewertung;
	}
	
	@GET
	@Path("/bewertung/sum/{frageid}")
	@Produces("text/plain")
	public String sumBewertungByFrageId(@PathParam("frageid") int frageid){
		int sum = Bewertungsverwaltung.sumBewertungByFrageId(frageid);
		return ""+sum;
	}
	@GET
	@Path("/bewertung/anz/{frageid}")
	@Produces("text/plain")
	public String anzBewertungByFrageId(@PathParam("frageid") int frageid){
		int anz = Bewertungsverwaltung.anzBewertungByFrageId(frageid);
		return ""+anz;
	}
	
	@POST
	@Path("/bewertung")
	public void createBewertung(@FormParam("benutzerId") String benutzerId,
							 	@FormParam("wert") String wert,
							 	@FormParam("kommentar") String kommentar,
							 	@FormParam("frageId") String frageId)
	{
		Bewertung bewertung = new Bewertung();
		bewertung.setBenutzerId(Integer.parseInt(benutzerId));
		bewertung.setWert(Integer.parseInt(wert));
		bewertung.setKommentar(kommentar);
		bewertung.setFrageId(Integer.parseInt(frageId));
		Bewertungsverwaltung.createBewertung(bewertung);
		
		
	}
	

}
